# coding=utf-8
'''
classe de preparation des données : evite de naviguer dans le xml pendant l'analye des données
Created on 25 févr. 2012

@author: GUILLEMOT Mikaël
'''
from xml.etree.ElementTree import parse
import os
import urllib

class DataFormater():
    #les données se trouvent ici apres le chargement
    liste = []
    text = None
    
    def getData(self):
        return self.liste;
    
    def loadXml(self):
        '''
        methode de chargement des données xml (prevu pour le fichier proposé dans le lab)
        '''
        webXML= "http://www.cours.polymtl.ca/inf8007/Tp/20121/cours-poly.xml"
        localXML = "cours-poly.xml"
        print "Loading xml file, please wait..."
        
        if os.path.isfile(localXML):
            print "using local version"
            inFile = localXML
        else :
            try : 
                print "using web version"
                inFile = urllib.urlopen(webXML)
            except :
                print "erreur lors de la tentative de recuperation du fichier XML"
                return False
        try:
            
            base = parse(inFile).iter("cours")
            
            print"Xml loaded, extracting data..."
            for cours in base:
                details = cours.find("details")
                self.liste.append((details.findtext("titre"), details.findtext("responsable"), details.findtext("description"), details.findtext("sigle")))
            print "Data loaded!"
        except Exception as e:
            print "fail to load XML."
            print e.message
            return False
        return True
    
    def webFormat(self, keyType, keys, matchingIndexs):
        '''
        methode de formatage pour la page de resultats : affiche les resultats pour une requette
        '''
        self.text = '<br>resultat par <b> %s</b> : ' %keyType
        if matchingIndexs == None or len(matchingIndexs) <1:
            self.text+=' <font color="#FF0000"> Aucun résultats valides!</font>'
        else :
            for index in matchingIndexs:
                self.webResultFormat(index)
        self.text+= '<br><hr>'
        return self.text
    
    #ici on affiche juste le contenu d'un resultats.
    def webResultFormat(self, matchingIndex):
        self.text+='<table><tr><td width="32"></td><td><u>Titre </u>: %s<br>' %self.liste[matchingIndex][0]
        self.text+='<u>Responsable(s) </u>: %s<br>' %self.liste[matchingIndex][1]
        self.text+='<u>Description </u>: %s' %self.liste[matchingIndex][2]
        self.text+='Lien vers le cours : <a href="http://www.polymtl.ca/etudes/cours/details.php?sigle=%s">' %self.liste[matchingIndex][3].strip()
        self.text+=' %s </a></td></tr></table><br>' %self.liste[matchingIndex][3] 
